/*
 * MapF.java
 *
 * Created on 23 de septiembre de 2005, 20:20
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */

package fmap.model;


import fmap.DatosCompartidos;
import java.util.Vector;
import javax.swing.ImageIcon;

/**
 *
 * @author javi
 */
public class MapF implements Comparable
{
    /**
     * Cuando se realiza una busqueda en archivos,directorios almacenamos los resultados de dicha busqueda
     */
    fmap.model.Node[] aNode = null;


    /**
     * Nos indica el estado de este objeto cd:
     * 1 => Normal (Estado por defecto)
     * 2 => Buscando
     * 3 => Busqueda finalizada y nombre de este mapa de ficheros no encontrado
     * 4 => Busqueda finalizada y nombre de este mapa de ficheros encontrado
     */
    int estado = 1;
    int numResult = -1;

    String name;
    String name2;
    int idCat = 1;
    String path; // Nos indica el path original del dispositivo desde el que se hizo este mapeo
    String desc;
    String icon;
    int numNod;
    int idMapF=0;
    int idCollection;
    boolean open = false;
    boolean error = false;
    int idTable; //Tabla de BD en la que estan guardados todos los nodos de esta mapa de ficheros
    String nameFound = "0"; // Nos indica que el nombre de este mapa de ficheros co

    
    public MapF (int _idMapF, int _idCollection, String _name, String _path, String _desc, String _icon, int _nNod, int _idTable, int _idCat)
    {
        idMapF          = _idMapF;
        idCollection    = _idCollection;
        name            = _name;
        name2           = _name;
        path            = _path;
        desc            = _desc;
        icon            = _icon;
        numNod          = _nNod;
        idTable         = _idTable;
        idCat           = _idCat;
    }


    public MapF ()
    {
    }

    public void setError ( boolean _error )
    {
        error = _error;
    }

    
    
    public Vector getVNodeType ( int type )
    {
        Vector v = new Vector ();
        
        if(aNode != null)
        {
            for(int i=0; i<aNode.length; i++)
            {
                if( aNode[i].getType () == type ) v.add (aNode[i]);
            }
        }
        return v;
    }
    
    
    public Vector getVNode ()
    {
        Vector v = new Vector ();
        
        if(aNode != null)
        {
            for(int i=0; i<aNode.length; i++)
            {
                v.add (aNode[i]);
            }
        }
        return v;
    }
    
    public void setVNode (Vector v)
    {
        aNode = new fmap.model.Node[ v.size () ];
        
        for( int i=0; i< v.size (); i++)
        {
            aNode[i] = (fmap.model.Node)v.get (i);
        }
    }
    
    
    
    /**
     * Obtenemos el listado de nodos para utilizar en el control "table"
     */
    public Vector getVNodeTable ()
    {
        Vector v = new Vector ();
        
        if( aNode != null )
        {
            for(int i=0; i<aNode.length; i++)
            {
                Vector vFila = new Vector ();
                
                vFila.add ( aNode[i] );
                vFila.add ( aNode[i].getSizeString () );
                vFila.add ( aNode[i].getDateString () );
                
                v.add ( vFila );
            }
        }
        
        return v;
    }
    
    
    
    public void setName (String _name)
    {
        name = _name;
    }
    
    public String toString ()
    {
        return name;
    }
    
    public void setOpen ( boolean _open )
    {
        open = _open;
    }
    
    public boolean getOpen ()
    {
        return open;
    }
    
    
    
    public int getIdMapF ()
    {
        return idMapF;
    }
    
    public void setIdMapF ( int _idMapF )
    {
        idMapF = _idMapF;
    }
    
    public int getIdCat ()
    {
        return idCat;
    }
    
    public void setIdCat( int _idCat )
    {
        idCat = _idCat;
    }

    public String getPath ()
    {
        return path;
    }
    
    public void setPath ( String _path )
    {
        this.path = _path;
    }
    
    public String getName ()
    {
        return name;
    }
    
    public String getName2 ()
    {
        return name2;
    }
    
    public String getDesc ()
    {
        return desc;
    }
    
    public void setDesc( String _desc )
    {
        desc = _desc;
    }

    public int getId ()
    {
        return idMapF;
    }
    
    public int getIdCollection ()
    {
        return idCollection;
    }
    
    public String getIcon ()
    {
/*
        if( !error )
        {
            switch( (int)new Integer (idCat) )
            {
                case 1:
                    switch( estado )
                    {
                        case 1:
                            return "/fmap/img/cd.png";
                        case 2:
                            return "/fmap/img/find.png";
                        case 3:
                            if( numResult > 0 )  return "/fmap/img/cd_result.png";
                            else                 return "/fmap/img/cd_noresult.png";
                    }
                    
                case 2:
                    switch( estado )
                    {
                        case 1:
                            return "/fmap/img/dvd.png";
                        case 2:
                            return "/fmap/img/find.png";
                        case 3:
                            if( numResult > 0 )  return "/fmap/img/dvd_result.png";
                            else                 return "/fmap/img/dvd_noresult.png";
                    }
                    
                case 3:
                    switch( estado )
                    {
                        case 1:
                            return "/fmap/img/ext.png";
                        case 2:
                            return "/fmap/img/find.png";
                        case 3:
                            if( numResult > 0 )  return "/fmap/img/ext_result.png";
                            else                 return "/fmap/img/ext_noresult.png";
                    }
                    
                case 4:
                    switch( estado )
                    {
                        case 1:
                            return "/fmap/img/book.png";
                        case 2:
                            return "/fmap/img/find.png";
                        case 3:
                            if( numResult > 0 )  return "/fmap/img/book_result.png";
                            else                 return "/fmap/img/book_noresult.png";
                    }
                    
                default: return "/fmap/img/book.png";
            }
        }
        else
        {
            return "/fmap/img/no_disponible.png";
        }
 */
    
        try
        {
            new ImageIcon ( getClass ().getResource (icon) );
            if( icon.trim ().equals ("") )  return "/fmap/img/no_disponible.png";
            else                            return icon;
        }
        catch(Exception e)
        {
            return "/fmap/img/no_disponible.png";
        }

    }
    
    public void setIcon( String _icon )
    {
        icon = _icon;
    }
    
    public int getNumNod ()
    {
        return numNod;
    }
    
    public void setNunNod ( int _numNod)
    {
        numNod = _numNod;
    }
    
    public void setEstado ( int _estado )
    {
        estado = _estado;
    }
    
    public int getEstado ()
    {
        return estado;
    }

    public void setNumResult ( int _numResult )
    {
        numResult = _numResult;
    }
    
    public int getNumResult ()
    {
        return numResult;
    }

    public void setIdTable ( int _idTable )
    {
        idTable = _idTable;
    }

    public int getIdTable ()
    {
        return idTable;
    }


    public int compareTo (Object o)
    {        
        int result=0;
        MapF temp = (MapF) o;

        
        if ( DatosCompartidos.ordenMapF == 1 )
        {
            result = name.compareTo ( temp.getName () );
        }
        else if ( DatosCompartidos.ordenMapF == 2 )
        {
            result = temp.getName ().compareTo ( name );
        }
        else if( DatosCompartidos.ordenMapF == 3 )
        {
            
            Integer numResultI      = new Integer( numResult );
            Integer numResultTmpI   = new Integer( temp.getNumResult () );

            // Ordenamos los mapas de ficheros por el numero de resultados de la busqueda
            result = numResultTmpI.compareTo ( numResultI );
        }
        else if( DatosCompartidos.ordenMapF == 4 )
        {
            
            Integer numResultI      = new Integer( numResult );
            Integer numResultTmpI   = new Integer( temp.getNumResult () );

            // Ordenamos los mapas de ficheros por el numero de resultados de la busqueda
            result = numResultI.compareTo ( numResultTmpI );
        }

        return result;
    }
    
}
